// 给你一个二维矩阵 matrix 和一个整数 k ，矩阵大小为 m x n 由非负整数组成。

// 矩阵中坐标 (a, b) 的 值 可由对所有满足 0 <= i <= a < m 且 0 <= j <= b < n 的元素 matrix[i][j]（下标从 0 开始计数）执行异或运算得到。

// 请你找出 matrix 的所有坐标中第 k 大的值（k 的值从 1 开始计数）。

// 来源：力扣（LeetCode）
// 链接：https://leetcode-cn.com/problems/find-kth-largest-xor-coordinate-value


/**
 * @param {number[][]} matrix
 * @param {number} k
 * @return {number}
 */
var kthLargestValue = function (matrix, k) {
  let xorList = []
  let a = matrix.length
  let b = matrix[0].length
  let dp = new Array(a + 1).fill(0).map(e => new Array(b + 1).fill(0))
  for (let i = 0; i < matrix.length; i++) {
    for (let j = 0; j < matrix[0].length; j++) {
      dp[i + 1][j + 1] = matrix[i][j] ^ dp[i][j] ^ dp[i + 1][j] ^ dp[i][j + 1]
      xorList.push(dp[i + 1][j + 1])
    }
  }
  return xorList.sort((a, b) => b - a)[k - 1]
};

console.log(kthLargestValue([[8, 10, 5, 8, 5, 7, 6, 0, 1, 4, 10, 6, 4, 3, 6, 8, 7, 9, 4, 2]], 2))



